今天的文章就直接切入主題好了,假設到了學期末,班上每個同學的成績普遍不理想 (當光光) 的情況下,老師不想面對這種情形時,就會透過全班成績開平方根再乘個8.xxx ~ 10
之類的,那就用python來試著寫看看吧:
"""這裡先簡單示範就好,所以就只是單純用list進行數字存放"""
score = [38, 29, 53, 17, 8, 49, 11, 9]
new_list = score ** 0.5
print(str(new_list))
可是,如果你真的打算像這樣直接進行運算的話,系統便會跳出跟下圖一樣的警示:
這是要告訴你「無法對list
進行float
才能進行的運算方式」,並建議你可以透過for迴圈對list內的每個職個別進行運算並存放回去使用者OS:那我用Excel還比較快
但是,這個情況其實可以透過導入numpy
來改善這個問題,只不過這個物件是python的額外插件,需要額外進行安裝設定才能導入與使用還好PyCharm可以直接幫我下載/安裝
在這裡就必須先做個說明,numpy
其實可以解釋為可運算的Dictionary資料架構
,只不過這種資料架構並沒有辦法同時存放不同類型的參數,若有這種情況的時候就會變成是下面的情況:
import numpy as np
tester_np = np.array([1, "Hello", False])
print(tester_np)
print(tester_np.dtype) #輸出np.array的物件屬性
"""
輸出結果如下:
['1' 'Hello' 'False']
<U11
>>>>雖然看起來並沒有不一樣,但是屬性已經是以Unicode 11的結構進行存放,簡單來說,所有Array內的元素都已經轉為字串
"""
好啦,那就來看看導入numpy之後有什麼不一樣吧:
import numpy as np
#先宣告並進行簡稱,這樣後面coding要用到就會比較輕鬆
score = [38, 29, 53, 17, 8, 49, 11, 9]
np_score = np.array(score)
#透過numpy的array功能來將原本的list轉錄進去,變成一個array型態
new_score = (np_score ** 0.5) * 12
#而numpy的array就可以直接進行運算了
print(new_score)
比較結果的時間到了:
學生的成績變漂亮了,老師也比較好做人了 才怪,只是不用寫太多的報告書而已